﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using FastTravel.BusinessLogic;
using ListItem = Ext.Net.ListItem;

namespace FastTravel.IntranetWeb
{
	/// <summary>
	/// Страница добавления нового отеля
	/// </summary>
	public partial class HotelAdd : BasePage
	{
		/// <summary>
		/// Загрузка страницы
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void Page_Load(object sender, EventArgs e)
		{
				var countryList = CountryManager.GetAll();
				foreach (var country in countryList)
				{
					comboCountry.Items.Add(new ListItem(country.Name, country.ID.ToString()));
				}
		}

		/// <summary>
		/// Заполниение комбо-бокса списокм курортов в зависимости от выбранной страны
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void ResortRefresh(object sender, StoreRefreshDataEventArgs e)
		{
			var data = new List<object>();
			var resortList = ResortManager.GetByCountry(int.Parse(this.comboCountry.SelectedItem.Value));

				foreach (var resort in resortList)
				{
					data.Add(new { ID = resort.ID, Name = resort.Name });
				}
				comboResort.Enabled = true;

			
			this.ResortStore.DataSource = data;
			this.ResortStore.DataBind();
		}

		/// <summary>
		/// Добавление нового отеля
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		protected void BtnSaveClick(object sender, DirectEventArgs e)
		{
			string resortId = this.comboResort.SelectedItem.Value;
			
			if (string.IsNullOrEmpty(resortId))
			{
				ExtNet.Msg.Notify("Ошибка", "Нет выбранного курорта! Выберите курорт или создайте новый!").Show();
			}
			else
			{
				int resort = int.Parse(resortId);
				string hotellName = txtName.Text == "" ? string.Empty : txtName.Text;
				string description = htmlDescription.Text == "" ? string.Empty : htmlDescription.Text;
				int raiting = int.Parse(this.comboRaiting.SelectedItem.Value);

				HotelManager.Add(hotellName, description, 1900, 0, 0, resort, raiting);

				if (BusinessLogicManager.TryCommit())
				{
					ExtNet.Msg.Notify("Сообщение", "Отель добавлен!").Show();
					pnlHotelAdd.ClearContent();
				}
				else
				{
					ExtNet.Msg.Notify("Ошибка", "Невозможно добавить отель!").Show();
				}
			}
			
		}

		/// <summary>
		/// Очистка формы
		/// </summary>
		private void ClearForm()
		{
			txtName.Clear();
			htmlDescription.Clear();
			comboCountry.Select(0);
			comboRaiting.Select(0);
			comboResort.Clear();
		}
	}
}